package evemanutool.data.general; /* * Used to represent an positive amount of time. * If initiated with a negative value all is set to 0. */ public class Time implements Comparable<Time>{ private int day; private int hour; private int min; private int sec; public Time() { day = 0; hour = 0; min = 0; sec = 0; } public Time(long ms) { if (ms < 0){ ms = 0; } sec = (int) (ms / 1000); format(); } public Time(int s) { if (s < 0){ s = 0; } sec = s; format(); } public Time(int d, int h, int m, int s) { if (d < 0 || h < 0 || m < 0 || s < 0){ d = 0; h = 0; m = 0; s = 0; } day = d; hour = h; min = m; sec = s; format(); } @Override public String toString() { return day + "d:" + hour + "h:" + min + "m:" + sec + "s"; } // Formats the time variables to appropriate values. private void format() { if (sec >= 60) { min += sec / 60; sec = sec % 60; } if (min >= 60) { hour += min / 60; min = min % 60; } if (hour >= 24) { day += hour / 24; hour = hour % 24; } } public double toHours() { return (day * 24) + hour + (min / ((double) 60)) + (sec / ((double) 3600)); } public double toSeconds() { return sec + min * 60 + hour * 3600 + day * 3600 * 24; } @Override public int compareTo(Time t) { int d1 = sec + min * 60 + hour * 3600 + day * 86400; int d2 = t.sec + t.min * 60 + t.hour * 3600 + t.day * 86400; if (d1 > d2) { return 1; } if (d1 < d2) { return -1; } return 0; } }